import { svgPathProperties } from 'svg-path-properties'

/**
 * 获取 SVG 路径上指定相对位置的坐标和角度
 * @param path SVG path 字符串
 * @param t 相对位置 (0 ~ 1)，如 0.33 表示 33%
 * @returns 坐标点 { x, y } 和角度 angle（单位：度）
 */
export function getPointAndAngleAt(
  path: string,
  t: number
): {
  x: number
  y: number
  angle: number
} {
  if (t < 0 || t > 1) {
    throw new Error('参数 t 必须在 0 到 1 之间')
  }

  const properties = new svgPathProperties(path)
  const totalLength = properties.getTotalLength()

  // 获取指定位置的坐标点
  const point = properties.getPointAtLength(totalLength * t)

  // 获取指定位置的切线方向
  const tangent = properties.getTangentAtLength(totalLength * t)
  const angle = Math.atan2(tangent.y, tangent.x) * (180 / Math.PI) // 转换为角度

  return {
    x: point.x,
    y: point.y,
    angle
  }
}
